#pragma once
#define DEFAULT_TIME 1577980800 //2020.1.3日
#define ONE_WEEK_SECOND 604800 //一周的秒数
#define ONE_DAY_SECOND 86400 //一天的秒数


class GanttTimeHelper
{
public:
//日期相关
	static time_t GetTodayZero();//获取今天的0点时间
	static int GetYear(time_t time);//获取一个日期的年
	static int GetMonth(time_t time);//获取月
	static int GetDay(time_t time);//获取日
	static time_t GetDefaultTime() {return DEFAULT_TIME;}//2020.1.3日//获取默认时间
	static time_t GetMondayTime(time_t Time);//给定一个时间戳返回当前日期的周一
	static FString GetWeekRange(time_t Time);//给一个日期返回该周的范围 例如返回  2020年 1月6日-1月12日
	static FString UnixTimestampToStr(time_t Time);//时间戳转字符串yyyy-mm-dd格式的字符串
	static uint16 DaysBetween2Date(time_t day1, time_t day2);//获取两个时间戳,所间隔的天数
	static int DaysSub(time_t day1, time_t day2);//两个时间的减法会返回负数
	static uint16 GetMonthDays(int year,int month);//获得一个月的天数
	static uint16 GetFirstDayWeekForMonth(int year, int month,int day = 1);//给一个年月日判断是星期几
	static bool StrDateToTImestamp(FString time,int& year, int& month, int& day);//通过字符串yyyy-mm-dd获得时间戳
	static time_t DateToTimestamp(int year,int month,int day);//通过日期获得时间戳
	static time_t Get00_00_00ToTimestamp(time_t Time);//给定一个时间戳,返回这一天的0点0分0秒的时间戳
	static void GetDayAdd(time_t time1, int num, int& year, int& month, int& day);//给日期做加法
	static void TimestampToData(time_t Time, int& year, int& month, int& day);//时间戳转年月日
	static FString GetTimeToStr();

//其他
	static bool FloatEquality(float a, float b);//由于FLOAT的特殊性这种写法就是判断FLOAT类型是否等于
	static bool FloatEqualityEx(float a, float b,int place);//判断小数点后N位的相等比较

};
